// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.expr.SQLListExpr;
// import com.alibaba.druid.sql.ast.statement.*;
// import com.alibaba.druid.sql.dialect.hive.ast.HiveInputOutputFormat;
// import com.alibaba.druid.sql.dialect.hive.stmt.HiveCreateTableStatement;
// import com.alibaba.druid.sql.parser.*;
// import com.alibaba.druid.util.FnvHash;
#pragma once
#include "../../../parser/SQLCreateTableParser.h"
#include "../../../../utils/common_ptr.h"

class HiveCreateTableParser : public SQLCreateTableParser
{
public:
  HiveCreateTableParser(SQLExprParser_ptr exprParser);

  HiveCreateTableParser(Lexer_ptr lexer);

  SQLCreateTableStatement_ptr parseCreateTable(BOOL_ptr acceptCreate);

  void parseTblProperties(HiveCreateTableStatement_ptr stmt);

  void parseLike(HiveCreateTableStatement_ptr stmt);

  void parseSortedBy(HiveCreateTableStatement_ptr stmt);

  void parseRowFormat(HiveCreateTableStatement_ptr stmt);

  // @Override
  HiveExprParser_ptr getExprParser();

  HiveCreateTableStatement_ptr newCreateStatement();

  SQLSelectParser_ptr createSQLSelectParser();
};
